package com.zhoux.collections.list;

import java.util.*;

/**
 * @author taoyi
 * @version 1.0
 * @date 2021/3/18 11:29
 *
 * 本类用于测试List接口
 */
public class List_Test2 {
    public static void main(String[] args) {
        // 创建List多态对象，List是接口，无法创建对象
        List<String> list = new ArrayList<String>();

        // 测试继承自Collection接口中的方法
        list.add("11");
        list.add("22");
        list.add("33");
        list.add("44");
        list.add("55");
        System.out.println(list);

//        list.clear();
        System.out.println(list.contains("88"));
        System.out.println(list.hashCode());
        System.out.println(list.isEmpty());
        System.out.println(list.size());
        System.out.println(list.remove("22"));
        System.out.println(Arrays.toString(list.toArray()));

        // 测试List接口中的特有方法
        list.add(0,"00"); // 在指定索引处添加元素
        list.add(0,"11"); // 在指定索引处添加元素
        System.out.println(list);
        System.out.println(list.get(2));
        System.out.println(list.indexOf("11")); // 获取元素首次出现的索引
        System.out.println(list.lastIndexOf("11")); // 获取元素最后出现的索引
        System.out.println(list.set(0,"99")); // 修改对应索引处的元素，返回值是即将被覆盖的元素
        System.out.println(list);
        System.out.println(list.remove(4));
        System.out.println(list.subList(0,3)); // 截取子集合，含头不含尾
        System.out.println(list);

        // 遍历获取集合元素，方式一：
        Iterator<String> it = list.iterator();
        while (it.hasNext()){
            System.out.print(it.next()+"\t");
        }
        System.out.println();

        // 遍历获取集合元素，方式二：
        ListIterator<String> it2 = list.listIterator();
        while (it2.hasNext()){
            System.out.print(it2.next()+"*");
        }
        System.out.println();

        // 遍历获取集合元素，方式三：
        for (String s: list) {
            System.out.print(s+"-");
        }
        System.out.println();

        // 遍历获取集合元素，方式四：
        for (int i = 0; i < list.size(); i++) {
            System.out.print(list.get(i)+",");
        }
        System.out.println();
    }
}

